草庐IT

c - WaitForMultipleObjects 堆栈

全部标签

linux - 进程超过 RedHat Enterprise Linux 6 上的线程堆栈大小限制?

我有几个进程在RHEL6.3上运行,但由于某些原因它们超出了线程堆栈大小。例如,在实际代码中使用pthread_attr_setstacksize()为Java进程在运行时提供-Xss256k的堆栈大小,并在实际代码中使用pthread_attr_setstacksize()为C++进程提供1MB的线程堆栈大小。但是,由于某些原因,这些过程并没有遵守这些限制,我不确定为什么。例如,当我运行时pmap-x对于C++和Java进程,我可以看到每个进程都有数百个“anon”线程(我已确认这些线程是由每个进程创建的内部工作线程),但每个进程的分配值为64MB,而不是上面设置的限制:00007f

linux - 进程超过 RedHat Enterprise Linux 6 上的线程堆栈大小限制?

我有几个进程在RHEL6.3上运行,但由于某些原因它们超出了线程堆栈大小。例如,在实际代码中使用pthread_attr_setstacksize()为Java进程在运行时提供-Xss256k的堆栈大小,并在实际代码中使用pthread_attr_setstacksize()为C++进程提供1MB的线程堆栈大小。但是,由于某些原因,这些过程并没有遵守这些限制,我不确定为什么。例如,当我运行时pmap-x对于C++和Java进程,我可以看到每个进程都有数百个“anon”线程(我已确认这些线程是由每个进程创建的内部工作线程),但每个进程的分配值为64MB,而不是上面设置的限制:00007f

linux - 在最近的 Linux 上执行进程堆栈中的代码

我想使用ptrace在正在运行的进程的堆栈中编写一段二进制代码。但是,这会导致段错误(信号11)。我可以确保%eip寄存器存储指向我要在堆栈中执行的第一条指令的指针。我想linux有某种机制可以保护堆栈数据是可执行的。所以,有没有人知道如何禁用堆栈的这种保护。具体来说,我正在尝试Fedora15。非常感谢!阅读所有回复后,我尝试了execstack,它确实使堆栈中的代码可执行。谢谢大家! 最佳答案 这可能是由于NXbit在现代处理器上。您可以使用execstack为您的程序禁用此功能。http://advosys.ca/viewpo

linux - 在最近的 Linux 上执行进程堆栈中的代码

我想使用ptrace在正在运行的进程的堆栈中编写一段二进制代码。但是,这会导致段错误(信号11)。我可以确保%eip寄存器存储指向我要在堆栈中执行的第一条指令的指针。我想linux有某种机制可以保护堆栈数据是可执行的。所以,有没有人知道如何禁用堆栈的这种保护。具体来说,我正在尝试Fedora15。非常感谢!阅读所有回复后,我尝试了execstack,它确实使堆栈中的代码可执行。谢谢大家! 最佳答案 这可能是由于NXbit在现代处理器上。您可以使用execstack为您的程序禁用此功能。http://advosys.ca/viewpo

MySQL 突然停止 LAMP 堆栈

我一直在Ubuntu设置上使用LAMP堆栈。它一直运行良好,设置多个数据库一切正常,然后今天早上我突然开始从我使用的网页中收到数据库错误,然后尝试访问PHPMyAdmin得到:error#2002CannotlogintotheMySQLserver我进入bash提示符并尝试以root用户身份登录,看看发生了什么我得到了类似的错误:ERROR2002(HY000):Can'tconnecttolocalMySQLserverthroughsocket'/var/run/mysqld/mysqld.sock'(111)我检查了mysql.sock文件是否存在,在上面错误的指定路径中。权限

MySQL 突然停止 LAMP 堆栈

我一直在Ubuntu设置上使用LAMP堆栈。它一直运行良好,设置多个数据库一切正常,然后今天早上我突然开始从我使用的网页中收到数据库错误,然后尝试访问PHPMyAdmin得到:error#2002CannotlogintotheMySQLserver我进入bash提示符并尝试以root用户身份登录,看看发生了什么我得到了类似的错误:ERROR2002(HY000):Can'tconnecttolocalMySQLserverthroughsocket'/var/run/mysqld/mysqld.sock'(111)我检查了mysql.sock文件是否存在,在上面错误的指定路径中。权限

linux - 测量 Linux 多线程应用程序的堆栈使用情况

我正在为Linux嵌入式平台开发多线程应用。目前我正在将每个线程的堆栈大小(通过pthread_set_attr)设置为相当大的默认值。我想将每个线程的值微调到更小的值,以减少我的应用程序的内存使用量。我可以通过反复试验将每个线程的堆栈大小设置为逐渐变小的值,直到程序崩溃,但应用程序使用约15个线程,每个线程具有完全不同的功能/属性,因此这种方法将非常耗时。我更愿意能够直接测量每个线程的堆栈使用情况。人们可以推荐一些实用工具来做到这一点吗?(例如,我来自vxWorks背景并使用vxWorksshell中的“ti”命令直接提供有关堆栈使用情况的统计信息以及有关任务状态的其他有用信息。)谢

linux - 测量 Linux 多线程应用程序的堆栈使用情况

我正在为Linux嵌入式平台开发多线程应用。目前我正在将每个线程的堆栈大小(通过pthread_set_attr)设置为相当大的默认值。我想将每个线程的值微调到更小的值,以减少我的应用程序的内存使用量。我可以通过反复试验将每个线程的堆栈大小设置为逐渐变小的值,直到程序崩溃,但应用程序使用约15个线程,每个线程具有完全不同的功能/属性,因此这种方法将非常耗时。我更愿意能够直接测量每个线程的堆栈使用情况。人们可以推荐一些实用工具来做到这一点吗?(例如,我来自vxWorks背景并使用vxWorksshell中的“ti”命令直接提供有关堆栈使用情况的统计信息以及有关任务状态的其他有用信息。)谢

c++ - 调试堆栈值损坏的好方法

调试堆栈值损坏的好方法是什么。在我的程序中,有时this指针的地址会在一个方法返回后更改,该方法对文件描述符执行关闭操作。我调试了几个小时的程序,但找不到问题所在。找出this指针地址发生变化的好方法是什么?当我在this指针上手动添加watch时,不会发生错误。当我尽可能地剥离我的代码时,错误仍然发生。我尝试了Valgrind,但没有发现任何早期堆栈损坏。我设法检测到错误发生的时间,我在64位模式下编译了代码。它的地址从0xxxxxxx更改为0x1000000xxxxxxx。我在发生错误的方法中检查了它的地址,我在地址更改时发现了这一点(请参阅第一个段落)。有没有其他方法可以找出问题

c++ - 调试堆栈值损坏的好方法

调试堆栈值损坏的好方法是什么。在我的程序中,有时this指针的地址会在一个方法返回后更改,该方法对文件描述符执行关闭操作。我调试了几个小时的程序,但找不到问题所在。找出this指针地址发生变化的好方法是什么?当我在this指针上手动添加watch时,不会发生错误。当我尽可能地剥离我的代码时,错误仍然发生。我尝试了Valgrind,但没有发现任何早期堆栈损坏。我设法检测到错误发生的时间,我在64位模式下编译了代码。它的地址从0xxxxxxx更改为0x1000000xxxxxxx。我在发生错误的方法中检查了它的地址,我在地址更改时发现了这一点(请参阅第一个段落)。有没有其他方法可以找出问题